% fname: routing_oddeven__sel_random__topology_8x8__.m
% ./noxim -routing oddeven -sel random -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -buffer 8 -traffic transpose1 

function [max_pir, max_throughput, min_delay] = routing_oddeven__sel_random__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.007        19.6226      0.0561602            135           3596          28754
            0.007        19.0116       0.057748            117           3698          29567
            0.007        19.4669      0.0566523            137           3626          29006
            0.007        18.1604      0.0566465            123           3623          29003
            0.007        18.5049      0.0559863            138           3585          28665
            0.007        18.7977       0.055834            112           3574          28587
            0.007        19.4265      0.0563242            119           3606          28838
            0.007        19.9568      0.0564277            135           3613          28891
            0.007        19.0521      0.0545313            125           3490          27920
            0.007         18.917          0.054            136           3456          27648
            0.007         19.057      0.0561641            146           3594          28756
            0.007        18.2126      0.0562324            158           3599          28791
            0.007        19.2924      0.0574609            197           3677          29420
            0.007        19.1197      0.0560176            123           3583          28681
            0.007        18.9948      0.0571426            113           3657          29257
            0.007        19.1781      0.0564375            127           3611          28896
            0.007        18.3867      0.0559746            114           3582          28659
            0.007        19.5767      0.0555977            274           3558          28466
            0.007        18.3739      0.0554062            103           3546          28368
            0.007         18.213      0.0563105            115           3605          28831
            0.008        21.6352      0.0659199            198           4219          33751
            0.008         22.532      0.0641758            242           4105          32858
            0.008        20.6104      0.0651133            129           4168          33338
            0.008        20.1076      0.0646836            144           4137          33118
            0.008        22.6513      0.0625566            237           4003          32029
            0.008         21.435      0.0634629            251           4064          32493
            0.008         19.265      0.0639941            122           4095          32765
            0.008        21.2545      0.0648164            256           4149          33186
            0.008        19.6987       0.061959            128           3966          31723
            0.008        21.2807      0.0645859            240           4136          33068
            0.008        20.6251      0.0644473            196           4126          32997
            0.008        20.6673      0.0624531            178           3995          31976
            0.008        20.0071      0.0640547            139           4097          32796
            0.008         19.743      0.0633965            133           4059          32459
            0.008        21.0117      0.0643477            164           4118          32946
            0.008        20.8106      0.0643438            140           4119          32944
            0.008        21.0031      0.0649141            197           4157          33236
            0.008        20.1889      0.0634531            196           4065          32488
            0.008        21.1777      0.0644941            222           4126          33021
            0.008        21.5438      0.0635801            165           4071          32553
            0.009        23.1173      0.0717734            185           4596          36748
            0.009        24.3181      0.0714941            271           4580          36605
            0.009        23.5445      0.0709687            225           4542          36336
            0.009         23.287      0.0703535            193           4505          36021
            0.009        24.6505      0.0726758            249           4652          37210
            0.009        23.5926      0.0702988            222           4502          35993
            0.009        26.8057      0.0734941            369           4703          37629
            0.009        22.4852      0.0717129            257           4586          36717
            0.009        25.1766      0.0729297            278           4665          37340
            0.009        24.7969      0.0706172            236           4519          36156
            0.009        22.2635       0.070873            183           4535          36287
            0.009        23.3055       0.071625            198           4586          36672
            0.009        23.2369      0.0716582            225           4589          36689
            0.009        23.5199      0.0735352            213           4705          37650
            0.009        21.9841      0.0697012            196           4461          35687
            0.009        26.2406      0.0714258            439           4571          36570
            0.009        24.6253      0.0718496            271           4598          36787
            0.009        24.3517      0.0737305            196           4720          37750
            0.009        23.3156      0.0712793            205           4563          36495
            0.009        25.6943      0.0728398            220           4662          37294
             0.01        27.5665      0.0783691            377           5013          40125
             0.01        36.5832      0.0804043            819           5146          41167
             0.01        31.4344      0.0799355            361           5117          40927
             0.01         27.513      0.0798359            285           5107          40876
             0.01        29.9399      0.0781699            576           5005          40023
             0.01        27.0624      0.0792344            275           5065          40568
             0.01        30.2906      0.0805703            325           5154          41252
             0.01        24.8168      0.0784375            254           5021          40160
             0.01        27.6218      0.0793516            254           5077          40628
             0.01        28.4908      0.0783965            476           5018          40139
             0.01        33.5789       0.079834            365           5110          40875
             0.01         27.045      0.0791328            299           5065          40516
             0.01         29.811      0.0793379            332           5079          40621
             0.01        32.1696      0.0789785            624           5053          40437
             0.01        46.5502      0.0808145           1760           5173          41377
             0.01        32.6339      0.0815332            358           5217          41745
             0.01        33.7771      0.0801191            561           5129          41021
             0.01        33.2502       0.079457            472           5088          40682
             0.01        30.4232      0.0807539            605           5165          41346
             0.01        27.8414      0.0789082            258           5051          40401
            0.011        43.9871      0.0895742           1302           5732          45862
            0.011        38.4832       0.087541            639           5602          44821
            0.011        48.3457      0.0856895           1367           5484          43873
            0.011        51.0339      0.0884316           1186           5661          45277
            0.011        75.0829      0.0896992           2914           5740          45926
            0.011        67.4975      0.0880195           1998           5632          45066
            0.011        34.7108       0.085416            437           5464          43733
            0.011        33.9749      0.0896113            429           5734          45881
            0.011        53.4253      0.0885664           1707           5669          45346
            0.011        47.2596      0.0880371           1242           5636          45075
            0.011         52.115       0.087791           1468           5618          44949
            0.011        39.4612      0.0874316            624           5596          44765
            0.011        34.2918       0.086709            486           5551          44395
            0.011        39.3958      0.0865371            670           5536          44307
            0.011        32.1699      0.0882246            625           5649          45171
            0.011        47.2756      0.0876582           1887           5610          44881
            0.011        63.7274      0.0889102           2356           5694          45522
            0.011        46.2848      0.0871465            727           5576          44619
            0.011        38.1966      0.0865898            540           5540          44334
            0.011        41.3936      0.0888281           1227           5688          45480
            0.012        95.8622      0.0966992           3004           6190          49510
            0.012        72.0343      0.0957695           2405           6130          49034
            0.012         79.609       0.095166           2775           6090          48725
            0.012        91.6202      0.0950117           3136           6080          48646
            0.012        54.7162       0.093873           2286           6005          48063
            0.012        57.5121      0.0978301           1309           6263          50089
            0.012        100.471      0.0965547           3614           6179          49436
            0.012        115.185      0.0941094           5515           6024          48184
            0.012         71.359      0.0963379           1842           6165          49325
            0.012         95.465      0.0967754           4750           6192          49549
            0.012        78.7129      0.0938652           3340           6009          48059
            0.012        66.4545       0.094834           2623           6070          48555
            0.012        93.7751      0.0950977           4233           6087          48690
            0.012        94.2547      0.0972715           3155           6224          49803
            0.012         75.919      0.0946895           2634           6061          48481
            0.012        72.9772      0.0959355           1693           6138          49119
            0.012        44.5114      0.0962246            904           6159          49267
            0.012        89.8949      0.0944082           4104           6042          48337
            0.012        85.0365      0.0953633           2427           6106          48826
            0.012        81.2127       0.095502           4159           6113          48897
            0.013        105.708       0.102195           3167           6538          52324
            0.013        112.999       0.100947           6519           6463          51685
            0.013        97.4742       0.102814           3742           6579          52641
            0.013        116.731       0.101877           4848           6521          52161
            0.013        150.446       0.103801           5968           6644          53146
            0.013        122.061       0.101502           5547           6495          51969
            0.013        122.221       0.101152           6361           6473          51790
            0.013        119.425        0.10218           5215           6540          52316
            0.013        109.435       0.101127           4907           6474          51777
            0.013        134.005       0.103418           5531           6617          52950
            0.013         125.41       0.101225           6747           6476          51827
            0.013        110.182       0.101813           4412           6517          52128
            0.013        153.978       0.103262           4805           6608          52870
            0.013         132.45       0.101875           6576           6521          52160
            0.013        127.444       0.104234           6331           6669          53368
            0.013        122.778       0.101986           3868           6525          52217
            0.013        94.2983       0.100572           5524           6436          51493
            0.013        172.415       0.100701           6600           6446          51559
            0.013         118.57       0.102268           5144           6544          52361
            0.013        122.818       0.101555           5090           6496          51996
            0.014        188.049       0.109023           7107           6975          55820
            0.014        172.721       0.106332           7388           6806          54442
            0.014        156.678       0.108514           6666           6946          55559
            0.014        179.181       0.109195           6558           6985          55908
            0.014        170.471       0.109631           7009           7014          56131
            0.014        147.074       0.106342           5895           6802          54447
            0.014        151.924       0.105727           8213           6767          54132
            0.014         165.98       0.109707           6336           7024          56170
            0.014         182.34       0.108092           7309           6917          55343
            0.014        142.426       0.110598           6423           7080          56626
            0.014         146.13        0.10733           7068           6873          54953
            0.014        142.076       0.109309           5792           6998          55966
            0.014         192.59       0.105576           6390           6757          54055
            0.014        173.199       0.109842           6067           7028          56239
            0.014        148.029       0.107854           6516           6903          55221
            0.014        180.966       0.108416           6366           6940          55509
            0.014        189.488       0.108236           5950           6927          55417
            0.014        125.029       0.107301           5882           6867          54938
            0.014        123.265       0.109381           4435           7005          56003
            0.014        173.473       0.107027           7406           6852          54798
            0.015        222.924       0.116107           6804           7429          59447
            0.015        228.779       0.114791           7939           7346          58773
            0.015        266.698       0.115182           7029           7371          58973
            0.015        262.903       0.114389           6304           7320          58567
            0.015        222.612       0.114744           7136           7345          58749
            0.015        166.944       0.111479           4836           7133          57077
            0.015        261.068       0.114766           7456           7348          58760
            0.015        225.062        0.11352           6677           7268          58122
            0.015        194.947       0.114469           6981           7322          58608
            0.015        183.246       0.112318           6922           7185          57507
            0.015        252.489       0.115068           7602           7365          58915
            0.015        222.745       0.113207           7119           7247          57962
            0.015        228.595       0.114424           7140           7326          58585
            0.015        223.819       0.114105           6981           7304          58422
            0.015        246.216       0.115127           7295           7364          58945
            0.015        234.943       0.113352           7509           7258          58036
            0.015        216.762       0.113957           5875           7288          58346
            0.015        177.633       0.115898           6227           7414          59340
            0.015        293.743       0.113234           7744           7250          57976
            0.015        280.743       0.113424           7892           7259          58073
            0.016        351.969       0.118039           7876           7554          60436
            0.016        339.563       0.118674           6453           7597          60761
            0.016        322.258       0.115855           7229           7416          59318
            0.016        284.543       0.117521           7118           7521          60171
            0.016         284.61       0.119449           7035           7650          61158
            0.016        354.584       0.117553           6744           7520          60187
            0.016        262.732       0.119746           7799           7663          61310
            0.016        289.746       0.118047           7980           7557          60440
            0.016        301.283       0.120078           7694           7682          61480
            0.016        339.889       0.118506           7896           7583          60675
            0.016        303.846       0.118508           7402           7583          60676
            0.016         275.52       0.118637           6536           7591          60742
            0.016        341.582       0.119975           7476           7679          61427
            0.016        324.502         0.1195           7245           7649          61184
            0.016        291.166       0.117738           6120           7536          60282
            0.016        297.663       0.118666           7850           7597          60757
            0.016        321.281       0.120365           7310           7704          61627
            0.016        306.451       0.118092           7488           7556          60463
            0.016        270.934       0.118564           7861           7588          60705
            0.016        308.138       0.119637           6710           7656          61254
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
